<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        //例子1
        // let a = un * 5
        // console.log('后续代码执行了吗？')

        //例子2
        // var miles, fmiles, km
        // miles = prompt('请输入英里数:')
        // fmiles = parseFloat(miles) 
        // if (isNaN(fmiles))
        // //   throw new TypeError('输入的必须是数字')
        //     throw {code : 401,info : '输入的必须是数字'}

        // km = fmiles * 1.609344
        // console.log(`${miles} 英里等于 ${km} 公里`)
        
        //例子三
        // var cusInput = prompt('请输入一个数字')
        // try {
        //     if(cusInput === '401'){
        //         throw {
        //             status:'401',
        //             msg:'错误是401'
        //         }}
        //     else if (cusInput === '404'){
        //         throw{
        //             status:'404',
        //             mag:'错误是404，前端错误'
        //         }}
        //     else{
        //         throw new Error(`输入的是${cusInput}`)
        //     }
        // }
        //  catch (error) {
        //     console.log(error)
        // }

        //例子4
        // function level_3(){
        //   console.log ('进入 level_3')
        //   throw {info : '自定义错误对象'}
        //   console.log ('离开 level_3')
        // }

        // function level_2(){
        //   console.log ('进入 level_2')
        //   level_3()
        //   console.log ('离开 level_2')
        // }

        // function level_1(){
        //   console.log ('进入 level_1')
        //   level_2()
        //   console.log ('离开 level_1')
        // }


        // try{
        //   level_1()
        // }
        // catch (e) {
        //   console.log('错误处理')
        // }

        // console.log('程序正常退出')

        //例子5
        // function level_3(){
        //   console.log ('进入 level_3')
        //   throw {info : '自定义错误对象'}
        //   console.log ('离开 level_3')
        // }

        // function level_2(){
        //   console.log ('进入 level_2')
        //   level_3()
        //   console.log ('离开 level_2')
        // }

        // function level_1(){
        //   console.log ('进入 level_1')
        //   try{
        //     level_2()
        //   }
        //   catch (e) {
        //     console.log('错误处理')
        //   }
        //   console.log ('离开 level_1')
        // }


        // level_1()

        // console.log('程序正常退出')

        //例子6
        function level_3(){
          console.log ('进入 level_3')
          throw {info : '自定义错误对象'}
          console.log ('离开 level_3')
        }
        
        function level_2(){
          console.log ('进入 level_2')
          try{
            level_3()
          }
          catch (e) {
            console.log('错误处理')    //执行
          }
          console.log ('离开 level_2')  //执行
        }
        
        function level_1(){
          console.log ('进入 level_1')
          level_2()
          console.log ('离开 level_1')
        }
        
        
        level_1()
        
        console.log('程序正常退出')
    </script>
</head>

<body>
    
</body>
</html>